pattern programs in java explanation